import type { Component } from 'vue'

type Module = { default?: Component }

const componentsMap: Record<string, Component> = {}

// 使用 IIFE 立即执行注册逻辑
;(function registerComponents() {
  // 使用推荐的最新 glob API 替换 globEager
  const modules = import.meta.glob('./demo/**/index.vue', { 
    eager: true,
    import: 'default'
  }) as Record<string, Component>

  Object.entries(modules).forEach(([filePath, component]) => {
    try {
      // 增强类型校验
      if (!component?.name) {
        console.warn(`组件注册失败: ${filePath} 缺少 name 属性`)
        return
      }

      // 避免重复注册检查
      if (componentsMap[component?.name]) {
        console.warn(`组件 ${component.name} 已存在，跳过重复注册`)
        return
      }

      componentsMap[component?.name] = component
    } catch (err) {
      console.error(`组件注册异常: ${filePath}`, err)
    }
  })
})()

export default componentsMap